home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Cream of the Crop 11
/
Cream of the Crop 11-1.iso
/
utility
/
pwg_key.zip
/
MOREINFO.TXT
< prev
next >
Wrap
Text File
|
1995-12-05
|
4KB
|
126 lines
'*********************************************************************
*
' Then I perform a Modulo 10 "Credit Card"-Style check on the Key
'Date: 1994-10-12,16:08
From: BILL MASELLA
To: DAVID PARKS
Subject: Mod10 - Product Digit Add
Flags:
DP=:-> Credit cards also use a modulus 10 check digit routine on them.
If t
=:-> card number doesn't pass mod10 tthen you shouldn't allow it
either.
DP=:Back up.. I like what your saying, but I'm completely lost on what
=:Modulus 10 means.. I'm by now means a programmer.. Could you
please
=:explain what the mod10 is? I would be extremely interested to
hear
=:about it.
The actual process goes something like this...
Multiply each digit of the card holder number by its appropriate
number
in the weight series ...2121 starting at the far right digit of the
number. Next take those products and add each of the digits together.
If the sum is divisible by 10 then the number has the correct check
digit on it. If not the card is invalid.... Here is an example:
Card Number: 5 0 0 1 2 3 4 5 6 7 8 9 2 1 0 7
Weight Series: 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1
-------------------------------------------------------------------
Products: 10 0 0 1 4 3 8 5 12 7 16 9 4 1 0 7
Add: 1+0+0 +0 +1 +4 +3 +8 +5+1+2+7+1+6+9 +4 +1 +0 +7 =
60
Is this sum EVENLY divisible by 10? Yes! Card OK!
You need to pay close attention to starting the weighting with the
RIGHT
most digit first or it will not work. On the shorter VISA numbers:
X X X X X X X X X X X X
X
Weighting would be: 1 2 1 2 1 2 1 2 1 2 1 2
1
Did this help?
You also know that the card numbers all have a certain length
requirement and that they all generally have a unique first couple of
digits which help you determine what card type you are looking at?
Visa all start with a 4 13 OR 16 digits long
MasterCard with a 5 16 digits long
Amex with a 37 15 digits long
Discover with a 60 16 digits long
When we test them we usually run them through a mask first to see if
it
is XX digits long and starts with the appropriate number. If not we
never get to a check digit calculation.
======================================================================
==
Date: 1994-10-14,09:13
From: GREG HEWGILL
To: DAVID PARKS
Subject: Mod10 - Product Digit Add
Flags: Read
DP>Wow! That has helped me out a lot! I have tried calling visa, MC,
my
>credit service, and so on for an explanation like that! Thank You
very
>very much!!! (Trying to figure out how to program that for a basic
>programmer like me will be a different story) :)
Here's some code that will do that:
function JustDigits(cardnumber as string) as string
dim numbers as string
numbers = ""
dim i as integer
for i = 1 to len(cardnumber)
if mid(cardnumber, i, 1) >= "0" and mid(cardnumber, i, 1) <= "9"
then
numbers = numbers + mid(cardnumber, i, 1)
end if
next
JustDigits = numbers
end function
function ValidCardNumber(cardnumber as string) as integer
dim numbers as string
numbers = JustDigits(cardnumber)
dim sum as integer
sum = 0
dim m as integer
m = 2
dim i as integer
for i = len(numbers)-1 to 1 step -1
dim d as integer
d = val(mid(numbers, i, 1)) * m
if d >= 10 then
d = (d mod 10) + 1
end if
sum = sum + d
m = 3 - m
next
ValidCardNumber = (10 - (sum mod 10)) mod 10 = val(right(numbers,
1))
end function
The ValidCardNumber function will return whether it thinks the card
number is valid or not. Hope this helps.
Greg
MSI
'******************************************************************